package com.mhy.vvvv;

import android.util.Log;
import android.view.View;

import androidx.annotation.NonNull;
import androidx.viewpager.widget.ViewPager;

/**
 * @author mahongyin 2020-08-16 22:30 @CopyRight mhy.work@qq.com
 *
 * 设置中间放大两边缩小
 */
public class ScalePageTransformer implements ViewPager.PageTransformer {

    public static final float MAX_SCALE = 1.0f;
    public static final float MIN_SCALE = 0.75f;

    /**
     * 偏移量
     */
    private int mScaleOffset = 40;


    /**
     *   缩放偏移量 单位 px
     */
    public ScalePageTransformer() {
    }
//    @Override
//    public void transformPage(View page, float position) {
////    重叠
//        Log.i("mhyLog",position+"");
//        if (position <= 0.0f) {//被滑动的那页
//            page.setTranslationX(0f);
//        } else {//未被滑动的页
//            page.setTranslationX((-page.getWidth() * position));
//            //缩放比例
//            float scale = (page.getWidth() - mScaleOffset * position) / (float) (page.getWidth());
//
//            page.setScaleX(scale);
//            page.setScaleY(scale);
//
//            page.setTranslationY(mScaleOffset * position);
//
//        }
//    }
//    @Override
//    public void transformPage(@NonNull View page, float position) {
//        //左右
//        Log.i("mhyLog",position+"");
//        if (position < -1) {
//            position = -1;
//        } else if (position > 1) {
//            position = 1;
//        }
//        float tempScale = position < 0 ? MIN_SCALE:MAX_SCALE;
//
//        float slope = (MAX_SCALE - MIN_SCALE) / 1;
//
//        float scaleValue = MIN_SCALE + tempScale * slope;
//        page.setScaleX(scaleValue);
//        page.setScaleY(scaleValue);
//    }

    private static final float DEFAULT_MIN_SCALE = 0.75f;
    private float mMinScale = DEFAULT_MIN_SCALE;

    @Override
    public void transformPage(View view, float position) {
        int pageWidth = view.getWidth();

        if (position < -1) { // [-Infinity,-1)
            // 该页面在屏幕外的左侧
            view.setAlpha(0f);

        } else if (position <= 0) { // [-1,0]
            //被滑动页
            // 移至左侧页面时使用默认幻灯片过渡
//            view.setAlpha(1f);
//            view.setTranslationX(0f);
//            view.setScaleX(1f);
//            view.setScaleY(1f);
//            view.setVisibility(View.VISIBLE);
            // Fade the page out.
            view.setAlpha(1 + position);

            // 抵消默认的幻灯片过渡
            view.setTranslationX(pageWidth*-position);//pageWidth*-position
view.setPivotX(0f);
view.setPivotY(view.getHeight()/2f);
            // 缩小页面（在MIN_SCALE和1之间）
            float scaleFactor = mMinScale
                    + (1 - mMinScale) * (1 - Math.abs(position));
            view.setScaleX(scaleFactor);
            view.setScaleY(scaleFactor);

        } else if (position <= 1) { // (0,1]
            view.setAlpha(1f);
            view.setTranslationX(0f);
            view.setScaleX(1f);
            view.setScaleY(1f);
            //退出页面时
//            if(position ==1){
//                view.setVisibility(View.INVISIBLE);
//            }
            //进入页面时
//            view.setVisibility(View.VISIBLE);
//            // Fade the page out.
//            view.setAlpha(1 - position);
//
//            // 抵消默认的幻灯片过渡
//            view.setTranslationX(0f);//pageWidth*-position
//
//            // 缩小页面（在MIN_SCALE和1之间）
//            float scaleFactor = mMinScale
//                    + (1 - mMinScale) * (1 - Math.abs(position));
//            view.setScaleX(scaleFactor);
//            view.setScaleY(scaleFactor);
//            //退出页面时
//            if(position ==1){
//                view.setVisibility(View.INVISIBLE);
//            }

        } else { // (1,+Infinity]
            // 该页面位于屏幕右侧.
            view.setAlpha(1f);
        }
    }
    private static final float MAX_ROTATION=20.0f;
     private static final float MAX_TRANSLATE=20.0f;

//             @Override
//     public void transformPage(View page, float position) {
//                 if(position<-1) {
//                         page.setTranslationX(MAX_TRANSLATE);
//                       page.setScaleX(MIN_SCALE);
//                         page.setScaleY(MIN_SCALE);
//                        page.setRotationY(-MAX_ROTATION);
//                    }
//                else if(position<=0) {
//                        page.setTranslationX(-MAX_TRANSLATE*position);
//                        float scale=MIN_SCALE+(1-MIN_SCALE)*(1.0f+position);
//                         page.setScaleX(scale);
//                         page.setScaleY(scale);
//                         page.setRotationY(MAX_ROTATION*position);
//                    }
//                 else if(position<=1) {
//                         page.setTranslationX(-MAX_TRANSLATE*position);
//                         float scale=MIN_SCALE+(1-MIN_SCALE)*(1.0f-position);
//                         page.setScaleX(scale);
//                        page.setScaleY(scale);
//                         page.setRotationY(MAX_ROTATION*position);
//                    }
//                else {
//                        page.setTranslationX(-MAX_TRANSLATE);
//                         page.setScaleX(MIN_SCALE);
//                         page.setScaleY(MIN_SCALE);
//                        page.setRotationY(MAX_ROTATION);
//                     }
//           }
//public void transformPage(View view, float position) {
//    if(position<1 && position>-1){
//        //得到当前页面滑动的position，来控制里面的每一个页面子控件加速行驶
//        //控制子控件在viewpager正常滑动的基础上加一个同方向的偏移量
//
//        ViewGroup rl=(ViewGroup)view.findViewById(R.id.rl);
//
//        //1.子控件偏移
//        for(int i=0;i<rl.getChildCount();i++){
//            View child=rl.getChildAt(i);
//
//            //每一个子控件有平移速度不一样，随机数(0-1)
//            float factor=(float) (Math.random()*2);
//
//            if(child.getTag()==null){
//                child.setTag(factor);
//            }else{
//                factor=(Float) child.getTag();
//            }
//
//            //在原来的位置上加一个平移量,position(-1~0~1)
//            child.setTranslationX(position*factor*child.getWidth());
//        }
//
//
//        //2.往右滑动：position：0~1.左边：0~-1
//        //缩放：0~1
//        //1.往右移动，缩小。2.往左移动，缩小 . 绝对值:abs()
////			view.setScaleX(1-Math.abs(position));
////			view.setScaleY(1-Math.abs(position));
//
//        view.setScaleX(Math.max(0.9f,1-Math.abs(position)));
//        view.setScaleY(Math.max(0.9f, 1-Math.abs(position)));
//
//
//        //3d立体翻转效果
////			//View的旋转，需要设置旋转中心坐标（绕着Y轴旋转）
////			view.setPivotX(position<0f?view.getWidth():0f);
////			view.setPivotY(view.getHeight()*0.5f);
////			view.setRotationY(position*90f);//旋转的角度
//        view.setRotationY(-position*45f);//旋转的角度
//        //4.折中翻转效果
////				view.setPivotX(view.getWidth()*0.5f);
////			view.setPivotY(view.getHeight()*0.5f);
////			view.setRotationY(-position*90f);//旋转的角度//4.让图片折中翻转
////
//    }
//}

 }